The invention relates generally to the field of computer graphics, computer-aided design and the like, and more particularly to systems and methods for generating shader systems and using the shader systems so generated in rendering an image of a scene. The invention in particular provides a new type of component useful in a computer graphics system, identified herein as a xe2x80x9cphenomenon,xe2x80x9d which comprises a system including a packaged and encapsulated shader DAG (xe2x80x9cdirected acyclic graphxe2x80x9d) or set of cooperating shader DAGs, each of which can include one or more shaders, which is generated and encapsulated to assist in defining at least a portion of a scene, in a manner which will ensure that the shaders can correctly cooperate during rendering.
In computer graphics, computer-aided geometric design and the like, an artist, draftsman or the like (generally referred to herein as an xe2x80x9coperatorxe2x80x9d) attempts to generate a three-dimensional representation of objects in a scene, as maintained by a computer, and thereafter render respective two-dimensional images of the objects in the scene from one or more orientations. In the first, representation generation phase, conventionally, computer graphics systems generate a three-dimensional representation from, for example, various two-dimensional line drawings comprising contours and/or cross-sections of the objects in the scene and by applying a number of operations to such lines which will result in two-dimensional surfaces in three-dimensional space, and subsequent modification of parameters and control points of such surfaces to correct or otherwise modify the shape of the resulting representation of the object. During this process, the operator also defines various properties of the surfaces of the objects, the structure and characteristics of light sources which illuminate the scene, and the structure and characteristics of one or more simulated cameras which generate the images. After the structure and characteristics of the scene, light source(s) and camera(s) have been defined, in the second phase, an operator enables the computer to render an image of the scene from a particular viewing direction.
The objects in the scene, light source(s) and camera(s) are defined, in the first, scene definition, phase, by respective multiple-dimensional mathematical representations, including at least the three spatial dimensions, and possibly one time dimension. The mathematical representations are typically stored in a tree-structured data structure. The properties of the surfaces of the objects, in turn, are defined by xe2x80x9cshade trees,xe2x80x9d each of which includes one or more shaders which, during the second, scene rendering, phase, enables the computer to render the respective surfaces, essentially providing color values representative of colors of the respective surfaces. The shaders of a shade tree are generated by an operator, or are provided a priori by a computer graphics system, in a high-level language such as C or C++, which together enable the computer to render an image of a respective surface in the second, scene rendering, phase.
A number of problems arise from the generation and use of shaders and shade trees as currently provided in computer graphics arrangements. First, shaders generally cannot cooperate with each other unless they are programmed to do so. Typically, input values provided to shaders are constant values, which limits the shaders"" flexibility and ability to render features in an interesting and life-like manner. In addition, it is generally difficult to set up systems of cooperating shaders which can get their input values from a common source.
The invention provides a new and improved computer graphic system and method that provides for enhanced cooperation among shaders by facilitating generation of packaged and encapsulated shader DAGS, each of which can include one or more shaders, generated in a manner so as to ensure that the shaders in the shader DAGs can correctly cooperate during rendering.
In brief summary, a computer graphics system is provided in which a new type of entity, referred to as a xe2x80x9cphenomenon,xe2x80x9d can be created, instantiated and used in rendering an image of a scene. A phenomenon is an encapsulated shader DAG comprising one or more nodes each comprising a shader, or an encapsulated set of such DAGs which are interconnected so as to cooperate, which are instantiated and attached to entities in the scene which are created during the scene definition process to define diverse types of features of a scene, including color and textural features of surfaces of objects in the scene, characteristics of volumes and geometries in the scene, features of light sources illuminating the scene, features of simulated cameras which will be simulated during rendering, and numerous other features which are useful in rendering.
Phenomena selected for use by an operator in connection with a scene may be predefined, or they may be constructed from base shader nodes by an operator using a phenomenon creator. The phenomenon creator ensures that phenomena are constructed so that the shaders in the DAG or cooperating DAGs can correctly cooperate during rendering of an image of the scene.
Prior to being attached to a scene, a phenomenon is instantiated by providing values, or functions which are used to define the values, for each of the phenomenon""s parameters, using a phenomenon editor.
After a representation of a scene has been defined and phenomena attached, a scene image generator can generate an image of the scene. In that operation, the scene image generator operates in a series of phases, including a pre-processing phase, a rendering phase and a post-processing phase. During a pre-processing phase, the scene image generator can perform pre-processing operations, such as shadow and photon mapping, multiple inheritance resolution, and the like. The scene image generator may perform pre-processing operations if, for example, a phenomenon attached to the scene includes a geometry shader to generate geometry defined thereby for the scene. During the rendering phase, the scene image generator renders the image. During the post-processing phase, the scene image generator may perform post-processing operations if for example, a phenomenon attached to the scene includes a shader that defines post-processing operations, such as depth of field or motion blur calculations which are dependent on velocity and depth information stored in connection with each pixel value in the rendered image.